Questions
16 of 50
1What is a pseudo-class in CSS?
2How are pseudo-classes different from pseudo-elements?
3What is the syntax of a pseudo-class in CSS?
4Give some commonly used pseudo-classes.
5What does the :hover pseudo-class do?
6What’s the purpose of the :active pseudo-class?
7How does the :visited pseudo-class work for links?
8What is the :focus pseudo-class used for?
9What does the :checked pseudo-class do?
10How does the :disabled pseudo-class behave?
11What is the difference between :first-child and :first-of-type?
12How do :nth-child() and :nth-of-type() differ?
13How do you select every odd or even element using pseudo-classes?
14How can you style an element when it’s being hovered over along with its child?
15What does the :not() pseudo-class do?
16How can you use multiple pseudo-classes together?
17What is the difference between :link and :visited?
18What does the :target pseudo-class represent?
19How can you use :empty to detect empty elements?
20How does the :root pseudo-class differ from the html selector?
21What does the :valid and :invalid pseudo-class do?
22How can you use :required and :optional pseudo-classes in forms?
23What is the use of :in-range and :out-of-range?
24What does :read-only and :read-write do?
25How can you style an input field when it’s autofilled?
26How does the :focus-within pseudo-class work?
27What’s the difference between :focus and :focus-visible?
28What is the purpose of the :placeholder-shown pseudo-class?
29How can you style a checkbox when it is checked or unchecked?
30How can you style invalid form inputs without JavaScript?
31Can pseudo-classes be chained together? Give an example.
32What is the specificity of pseudo-classes compared to normal selectors?
33How can you use :not() effectively to exclude elements from styling?
34How does :has() pseudo-class work, and why is it powerful?
35Is :has() supported in all browsers?
36How does :is() differ from :where() in terms of specificity?
37How can you combine :is() or :where() with other selectors for cleaner code?
38What’s the difference between :nth-child() and :nth-last-child()?
39How can you style only the last element of a list using pseudo-classes?
40What does the :lang() pseudo-class do?
41How do you change a button’s color when hovered but not when disabled?
42How can you highlight the current section in a menu using :target?
43How can you style a form field differently when focused and valid?
44How do you style every third list item differently?
45How can you style alternate table rows without adding extra classes?
46How do you hide empty <p> tags using pseudo-classes?
47How can you style the parent when any child inside it is focused?
48How can you highlight a link only when it’s both focused and hovered?
49How can you style the first letter of only the first paragraph using pseudo-classes?
50How would you use :has() to select a <div> that contains an image?
16 / 50

How can you use multiple pseudo-classes together?

Using Multiple Pseudo-Classes in CSS

In CSS, you can combine multiple pseudo-classes to apply styles to elements that satisfy all of the specified conditions simultaneously. This allows for more precise and dynamic styling.

How to Combine Pseudo-Classes
  1. 1

    Chain pseudo-classes after a selector without spaces (e.g., a:hover:active).

  2. 2

    You can mix structural and dynamic pseudo-classes (e.g., li:first-child:hover).

  3. 3

    Pseudo-classes can also be combined with the :not() pseudo-class for exclusions.

Example: Using Multiple Pseudo-Classes

In this example, only the first list item changes color on hover. Checked checkboxes change accent color when hovered, and enabled buttons change background when hovered, showing how multiple pseudo-classes can work together.

Best Practices
  1. 1

    Combine pseudo-classes logically to target elements accurately without adding extra HTML classes.

  2. 2

    Keep chains readable and avoid over-complicating selectors.

  3. 3

    Test combined pseudo-classes across browsers to ensure consistent behavior.

  4. 4

    Use transitions to make dynamic changes smooth for better UX.

Difficulty: 3/10
Topics: pseudo-class chaining, specificity conflicts, hover-focus states

Scenario Questions

0-2 years experience
  1. 1

    How would you style a button so it only shows a background color when the user hovers over it AND it’s focused, but not when it’s disabled?

  2. 2

    What happens if you write .btn:hover:focus instead of .btn:focus:hover — does it matter, and why?

  3. 3

    You have a list item that’s supposed to turn red when hovered and also be the first child — how would you write that selector?

2-5 years experience
  1. 1

    A user reports that a form input’s focus state isn’t working when they tab to it — you notice it’s styled with :focus:hover, but the hover never triggers. What’s likely wrong?

  2. 2

    You’re building a navigation menu where links should highlight on hover, but not if they’re the active page — how would you combine pseudo-classes to handle this without adding extra classes?

  3. 3

    A component works fine in Chrome but breaks in Safari when using :nth-child(2n+1):not(.hidden) — what could be the issue, and how would you debug it?

5-8 years experience
  1. 1

    You’re designing a reusable card component that needs to support complex state combinations like :hover:not(.loading):focus-visible — how do you ensure this doesn’t bloat your CSS or create specificity wars across teams?

  2. 2

    A legacy UI has 20+ pseudo-class combinations scattered across files, causing unpredictable overrides. How would you refactor this for maintainability without breaking existing behavior?

  3. 3

    How would you architect a design system where pseudo-class combinations are predictable across components, and how do you enforce that consistency at scale?

8+ years experience
  1. 1

    You’re migrating a legacy CSS codebase that relies heavily on pseudo-class chains for state management — how do you decide whether to keep them, replace them with attributes, or move to a CSS-in-JS approach without breaking accessibility or performance?

  2. 2

    How would you design a CSS architecture that allows product teams to safely extend pseudo-class combinations without introducing specificity conflicts, especially when teams use different styling methodologies?

  3. 3

    When scaling a global design system, how do you balance the expressiveness of pseudo-class chaining against the risk of unintended side effects across thousands of components, and what tooling or governance do you put in place?

Follow-up Questions

  • What happens if you reverse the order of the pseudo-classes?
  • How would you debug a hover state that isn't triggering as expected?
  • Can you think of a case where combining pseudo-classes breaks in older browsers?